package cn.me.alphamq.common.store;

import cn.me.alphamq.common.remote.SyncFuture;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 同步通信时的同步对象管理者
 *
 * @author f
 */
public class SyncFutureManager {

    /**
     * 管理同步对象的 map
     */
    private static final Map<String, SyncFuture> SYNC_FUTURE_MAP = new ConcurrentHashMap<>();

    /**
     * 放一个同步对象
     *
     * @param key        同步对象的键
     * @param syncFuture 同步对象
     */
    public static void put(String key, SyncFuture syncFuture) {
        SYNC_FUTURE_MAP.put(key, syncFuture);
    }

    /**
     * 获取同步对象，并移除它
     *
     * @param key 同步对象的键
     * @return 同步对象
     */
    public static SyncFuture getAndRemove(String key) {
        return SYNC_FUTURE_MAP.remove(key);
    }

    /**
     * 移除同步对象
     *
     * @param key 同步对象的键
     */
    public static void remove(String key) {
        SYNC_FUTURE_MAP.remove(key);
    }

}
